import 'package:flutter/widgets.dart';

class AutoHeightWidget extends StatefulWidget {
  const AutoHeightWidget({Key key}) : super(key: key);

  @override
  _AutoHeightWidgetState createState() => _AutoHeightWidgetState();
}

class _AutoHeightWidgetState extends State<AutoHeightWidget> {
  double height = 200;
  final scrollController = ScrollController();
  ScrollPhysics physics = ScrollPhysics();

  @override
  Widget build(BuildContext context) {
    Widget widget = Container(
      height: height,
      child: ListView.builder(
        controller: scrollController,
        physics: physics,
        scrollDirection: Axis.vertical,
        itemCount: 100,
        itemBuilder: (BuildContext context, int index) {
          return Container(
            height: 44,
            alignment: Alignment.center,
            child: Text('$index'),
          );
        },
      ),
    );

    // widget = Listener(
    //   onPointerMove: (event) {
    //     // print(event);
    //     setState(() {
    //       height -= event.delta.dy;
    //       if (height < 300) {
    //         // scrollController.jumpTo(0);
    //         physics = NeverScrollableScrollPhysics();
    //       } else {
    //         height = 300;
    //         physics = ScrollPhysics();
    //       }
    //     });
    //   },
    //   child: widget,
    // );

    // // bool userScroll = false;
    // widget = NotificationListener<ScrollNotification>(
    //   onNotification: (notification) {
    //     // if (notification is UserScrollNotification) {
    //     //   userScroll = true;
    //     // }
    //     // if (notification is ScrollEndNotification) {
    //     //   userScroll = false;
    //     // }
    //     // if (!userScroll) return false;

    //     final metrics = notification.metrics;
    //     print(notification.runtimeType);
    //     setState(() {
    //       // if (height < 300) {

    //       height = 200 + metrics.pixels;
    //       // scrollController.jumpTo(0);

    //       // }
    //     });
    //     return false;
    //   },
    //   child: widget,
    // );

    return widget;
  }
}
